package org.dromara.app.mapper;

import org.apache.ibatis.annotations.Param;
import org.dromara.app.appParams.AppDictionaryParam;
import org.dromara.app.appParams.AppFilteringParams;
import org.dromara.app.appReturn.AppDaRenInfo;
import org.dromara.app.appReturn.AppDictionaryReturn;
import org.dromara.app.appReturn.AppMemberCenterReturn;
import org.dromara.app.appReturn.AppUserHomePageReturn;
import org.dromara.app.domain.SkAppUser;
import org.dromara.app.domain.SkYueJuUser;
import org.dromara.app.domain.sys.SysSumData;
import org.dromara.app.domain.vo.SkAppUserVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;

import java.math.BigDecimal;
import java.util.List;

/**
 * app用户Mapper接口
 *
 * @author Evacuation
 * @date 2024-07-23
 */
public interface SkAppUserMapper extends BaseMapperPlus<SkAppUser, SkAppUserVo> {

    /**
     * 首页筛选达人信息
     *
     * @param app
     * @param startTime
     * @param endTime
     * @return
     */
    List<AppDaRenInfo> getFilteringExpertInformation(@Param("app") AppFilteringParams app, @Param("startTime")  String startTime, @Param("endTime")  String endTime);

    /**
     * 个人主页
     *
     * @param userId
     * @return
     */
    AppUserHomePageReturn getUserHomePage(Long userId);

    /**
     * 余额操作
     * @param userId
     * @param price
     */
     void activePrice(@Param("userId") Long userId,@Param("price")  BigDecimal price);
    /**
     * 字典查询
     */
    List<AppDictionaryReturn> getDictionary(AppDictionaryParam params);

    /**
     * 开通会员余额操作
     * @param price
     */
    void activeVipPrice(@Param("userId") Long userId,@Param("price") BigDecimal price,@Param("time") String time, @Param("vipType") Long vipType);

    /**
     * 约局用户 5人
     * @return
     */
    List<SkAppUser> homePageImageNumber();


    /**
     * 更新经验值
     * @param numbers
     * @param userId
     */
    void updateExperience(@Param("numbers") Long numbers,@Param("userId") Long userId);

    /**
     * 统计邀请人数
     * @param userId
     * @return
     */
    Long countInvitations(Long userId);

    /**
     * 统计达人邀请人数
     * @param userId
     * @return
     */
    Long countDarenInvitations(Long userId);

    /**
     * 统计用户新增
     * @param startTime
     * @param endTime
     * @return
     */
    SysSumData getSumData(@Param("startTime") String startTime, @Param("endTime") String endTime);
}
